Virtual machines can be provided in a computer to enhance flexibility and performance. A virtual machine typically refers to some arrangement of components (software and/or hardware) for virtualizing or emulating an actual computer, where the virtual machine can include an operating system and software applications. Virtual machines can allow different operating systems to be deployed on the same computer, such that applications written for different operating systems can be executed in different virtual machines (that contain corresponding operating systems) in the same computer. Moreover, the operating system in a virtual machine (referred to as a guest operating system) can be different from the host operating system that may be running on the computer on which the virtual machine is deployed.
In addition, a greater level of isolation is provided between or among applications running in different virtual machines than is provided by running applications in a single virtual or physical machine. In some cases, virtual machines also allow multiple applications to more efficiently share common resources (processing resources, input/output or I/O resources, and storage resources) of the computer. Such sharing of hardware resources is performed by virtualizing the hardware resources with a virtual machine control entity, such as a hypervisor.
Because virtual machines share the physical resources, and in particular the processing resources, it may be desirable to account for the amount of time each virtual machine uses a particular resource. Time accounting is useful for several purposes, including scheduling and prioritization schemes, performance measurements, and customer billing. However, issues may arise with time accounting when the guest operating system is unaware that it is running in a virtual environment.